from decimal import Decimal

from tools.handle_loguru import logger
from tools.handle_db import handle_mysql

# 封装一个数据库断言类
"""
1、测试用例当中，从excel中读取了assert_db的断言列表，读取出来是字符串类型。
2、替换步骤当中，assert_db中的，#xxx#标记符 被替换。
3、使用eval函数，把assert_db转换成python列表(列表当中的成员是字典)
   每个字典：要执行的sql语句、期望结果、期望和实际查出来的结果比对方式。
4、遍历列表，对每一个字典：
   4.1 执行sql语句。
       调哪个方法呢？获取条数的方法？还是获取数据的方法？-- 由sql_assert_type来决定。
       如果sql_assert_type为data，表示是获取数据。
       如果sql_assert_type为count，表示是获取条数。
   4.2 sql执行结果，与期望结果比对。
       try:
            assert 期望与实际的比对
       except:
            捕获异常
            return False   
"""


class HandleAssertDB:

    def assert_db(self, assert_db_str):
        """
        :param assert_db_str: 从excel当中读取出来的，要做数据库断言的列表，列表里面存放的是1个或多个数据库断言语句。
        列表当中，是字典。每个字典：要执行的sql语句(sql)、期望结果(expected)、调用哪个sql方法(sql_assert_type，有2种：data,count)
        :return: 如果所有的sql断言成功，返回True,如果某一个sql断言失败，返回 False
        """
        
        # 公开仓库去掉部分代码，已移交至私有仓库。